package edu.csl.study.springboot.eventDemo.javabean;

import java.beans.PropertyChangeListener;
import java.beans.PropertyChangeSupport;

/**
 * 来源：https://blog.csdn.net/zrudong/article/details/78567473
 * 事件源类
 * javabean规范中提供了一种监听属性变化的事件驱动模型。
 * 提供操作Javabean属性的类PropertyChangeSupport和PropertyEditorSupport。
 */
public class PaymentStatusUpdateBean {

    PropertyChangeSupport paymentlisteners = new PropertyChangeSupport(this);

    public void updateStatus(int newStatus) {
        // 模拟业务逻辑
        System.out.println("支付状态更新： " + newStatus);
        // 触发通知
        paymentlisteners.firePropertyChange("paymentStatuUpdate", 0, newStatus);        ;
    }

    public void addPropertyChangeListener(PropertyChangeListener listener) {
        paymentlisteners.addPropertyChangeListener(listener);
    }

    public void removePropertyChangeListener(PropertyChangeListener listener){
        paymentlisteners.addPropertyChangeListener(listener);
    }
}
